package com.swiftops.common.util;

import java.util.*;

public class MapUtil {

    /**
     * 验证Map为空
     *
     * @param map Map数据
     * @return 返回结果
     */
    public static boolean isEmpty(Map<?, ?> map) {
        return (map == null || map.isEmpty());
    }

    /**
     * 验证Map非空
     *
     * @param map Map数据
     * @return 返回结果
     */
    public static boolean isNotEmpty(Map<?, ?> map) {
        return !isEmpty(map);
    }


    /**
     * 将一个Map<String, Object>转换为Map<String, String>
     *
     * @param map 要转换的Map，其值为Object类型
     * @return 转换后的Map，其值为String类型
     */
    public static Map<String, String> mapValuesToString(Map<String, Object> map) {
        // 创建一个新的Map，用于存储转换后的键值对
        Map<String, String> newMap = new HashMap<>();

        // 迭代原始Map的条目
        Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, Object> entry = iterator.next();
            String key = entry.getKey();
            Object value = entry.getValue();

            // 将值转换为String并放入新的Map中
            String stringValue = (value != null) ? value.toString() : null;
            newMap.put(key, stringValue);
        }

        // 返回转换后的Map
        return newMap;
    }

    /**
     * 把Map<String, Object>的列表转换为Map<String, String>的列表
     *
     * @param mapList
     * @return
     */
    public static List<Map<String, String>> mapListValuesToString(List<Map<String, Object>> mapList) {
        List<Map<String, String>> result = new ArrayList<>(Double.valueOf(mapList.size() * 1.5).intValue());
        for (Map<String, Object> originalMap : mapList) {
            Map<String, String> stringMap = new HashMap<>();
            for (Map.Entry<String, Object> entry : originalMap.entrySet()) {
                String key = entry.getKey();
                Object value = entry.getValue();
                String stringValue = (value != null) ? value.toString() : null;
                stringMap.put(key, stringValue);
            }
            result.add(stringMap);
        }
        return result;
    }
}
